"""
1，导包
2，创建测试类
    2.1 前置处理
    2.2 后置处理
    2.3 创建测试用例
创建测试用例中有三个测试用例，分别为正常登陆，账号不存在，密码错误
"""
# 导包
import requests
import unittest
from api.login import LoginAPI

# 创建测试类
class TestLogin(unittest.TestCase):
    # 前置处理
    def setUp(self):
        self.login_api = LoginAPI()  # 实例化LoginAPI
        self.session = requests.Session()  # 创建session对象

    # 后置处理
    def tearDown(self):
        if self.session:
            self.session.close()

    # 创建测试用例
    # 正常登陆
    def test01_login_success(self):
        # 调用验证码接口
        response = self.login_api.get_verify_code(self.session)
        # 断言
        self.assertEqual(200, response.status_code)
        self.assertIn("image", response.headers.get("Content-Type"))
        # 调用登陆接口
        response = self.login_api.login(self.session, "18329547864", "123456", "8888")
        # 断言
        print(response.json())
        self.assertEqual(200, response.status_code)
        self.assertEqual(1, response.json().get("status"))
        self.assertIn("登陆成功", response.json().get("msg"))

    # 账号不存在
    def test02_username_is_not_exist(self):
        # 调用验证码接口
        response = self.login_api.get_verify_code(self.session)
        # 断言
        self.assertEqual(200, response.status_code)
        self.assertIn("image", response.headers.get("Content-Type"))
        # 调用登陆接口
        response = self.login_api.login(self.session, "183295478640", "123456", "8888")
        # 断言
        print(response.json())
        self.assertEqual(200, response.status_code)
        self.assertEqual(-1, response.json().get("status"))
        self.assertIn("账号不存在", response.json().get("msg"))

    # 密码错误
    def test03_password_error(self):
        # 调用验证码接口
        response = self.login_api.get_verify_code(self.session)
        # 断言
        self.assertEqual(200, response.status_code)
        self.assertIn("image", response.headers.get("Content-Type"))
        # 调用登陆接口
        response = self.login_api.login(self.session, "18329547864", "101010", "8888")
        # 断言
        print(response.json())
        self.assertEqual(200, response.status_code)
        self.assertEqual(-2, response.json().get("status"))
        self.assertIn("密码错误", response.json().get("msg"))